import time
import unittest
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support.select import Select


class UnittestFireFoxDriver(unittest.TestCase):
    """
        driver 代表的是 浏览器 驱动对象
    """
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        cls.service = Service(executable_path='../day01/driver_exe/geckodriver.exe')
        cls.driver = webdriver.Firefox(service=cls.service)

    def test_element_is_selected(self):
        """测试元素 是否被选中 """
        self.driver.get('file:///D:/SoftWare/testhtml/exam/House.html')

        # 获得网页 当中的所有的  复选框
        c1 = self.driver.find_element(By.NAME, "c1")  # ctrl + d
        c2 = self.driver.find_element(By.NAME, "c2")
        c3 = self.driver.find_element(By.NAME, "c3")
        c4 = self.driver.find_element(By.NAME, "c4")
        c5 = self.driver.find_element(By.NAME, "c5")

        # 列表的定义
        list_element = [c1, c2, c3, c4, c5]
        for element in list_element:
            if element.is_selected():
                print(element.get_attribute('name'), '这个元素被选中了，取消勾选')
                element.click()
            else:
                print(element.get_attribute('name'), '这个元素没有被选中，勾选')
                element.click()

    def test_element_is_enabled(self):
        """测试元素 是否已启用 """
        self.driver.get('file:///D:/SoftWare/testhtml/exam/House.html')
        wymc = self.driver.find_element(By.CLASS_NAME, "uname")
        # 三元运算符
        # 如果一个元素 在默认的情况下 是正常启用的
        # 如果一个元素 属性设置为  readOnly 结果： 已启用
        # 如果一个元素 属性设置为  disabled 结果： 未启用
        print('文本框已启用' if wymc.is_enabled() else '文本框未启用')

    def test_element_is_displayed(self):
        """测试元素 是否已隐藏 """
        self.driver.get('file:///D:/SoftWare/testhtml/exam/House.html')
        info = self.driver.find_element(By.CSS_SELECTOR, "p.edit")
        print('未隐藏' if info.is_displayed() else '已隐藏')

    @classmethod
    def tearDownClass(cls) -> None:
        # cls.driver.close()
        # cls.driver.quit()
        pass


if __name__ == '__main__':
    pass
